//柯里化的本质是将多参函数转换成多次单参函数


//简单的柯里化通用函数实现
function curry(fn){ // 传递一个函数进来
    return function curriedFn(...args){ // 返回一个函数,这个函数接收剩余参数
        if(args.length>=fn.length){ // 如果传入的参数个数大于等于fn的参数个数,直接执行fn
            return fn.apply(this,args)
        }else{
            return function(...args2){ // 否则返回一个新的函数,继续接收剩余参数
                return curriedFn.apply(this,args.concat(args2))
            }
        }
    }
}


function add(a,b){
    console.log(a+'+'+b+'='+(a+b))
    return a+b
}


const curryAdd = curry(add)

console.log(curryAdd(1)(2))
console.log(curryAdd(1,2))